package com.agile.leetcode.hot.middle;

import java.util.Arrays;

/**
 * 旋转图像
 * 我们以题目中的示例二
 * <p>
 * 作为例子，分析将图像旋转 90 度之后，这些数字出现在什么位置。
 * <p>
 * 对于矩阵中的第一行而言，在旋转后，它出现在倒数第一列的位置：
 * <p>
 * 旋转后
 * 并且，第一行的第 xx 个元素在旋转后恰好是倒数第一列的第 xx 个元素。
 * <p>
 * 对于矩阵中的第二行而言，在旋转后，它出现在倒数第二列的位置：
 * 旋转后
 * <p>
 * 对于矩阵中的第三行和第四行同理。这样我们可以得到规律
 * <p>
 * 作者：LeetCode-Solution
 * 链接：https://leetcode-cn.com/problems/rotate-image/solution/xuan-zhuan-tu-xiang-by-leetcode-solution-vu3m/
 * 来源：力扣（LeetCode）
 * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 *
 * @Author:ChenZhangKun
 * @Date: 2021/6/21 17:17
 */
public class Rotate {
    public static void main(String[] args) {
        int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        Rotate rotate = new Rotate();
        rotate.rotate(matrix);
        System.out.println(Arrays.toString(matrix));
    }

    public void rotate(int[][] matrix) {
        // 拿到数组长度
        int length = matrix.length;
        // 拿到辅助数组
        int[][] temp = new int[length][length];
        // 遍历
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length; j++) {
                temp[j][length - i - 1] = matrix[i][j];
            }
        }
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length; j++) {
                matrix[i][j] = temp[i][j];
            }
        }
    }
}
